Java8 Lambda表达式与Stream API (一):Lambda表达式

你要知道的Java8 匿名内部类、函数式接口、lambda表达式与Stream API都在这里

转载请注明出处 http://blog.csdn.net/u014205968/article/details/71484312

本文主要讲解Java8 Stream API,但是要讲解这一部分需要匿名内部类、lambda表达式以及函数式接口的相关知识,本文将分为两篇文章来讲解上述内容,读者可以按需查阅。

本文是该系列博文的第一篇Java 匿名内部类、lambda表达式与函数式接口,主要讲解Java匿名内部类lambda表达式以及函数式接口,第二篇文章Java Stream API主要讲解Java Stream API

匿名内部类

匿名内部类适用于那些只需要使用一次的类,比如设计模式下的命令模式,往往通过定义一系列接口进行调用,有时有的命令只会执行一次就不再执行,这个时候如果单独定义一个类就显得过于复杂并且编译会生成这个类的.class文件,不利于管理,这种情况下使用匿名内部类就能够很好的简化编程并且不会编译生成单独的.class文件。

接下来看一个例子:

interface Programmer
{
   
    void listLanguages();
    void introduceMyself();
}

class MyProgrammer implements Programmer
{
   
    public void listLanguages() {
        System.out.println("Objective-C Swift Python Go Java");
    }

    public void introduceMyself() {
        System.out.println("My Name is Jiaming Chen");
    }
}

public class HelloWorld
{
      
    static void info(Programmer programmer)
    {
        programmer.listLanguages();
        programmer.introduceMyself();
    }

    public static void main(String[] args)
    {   
        info(new MyProgrammer());
    }
}

上面这个例子为了执行info函数定义了一个实现了Programmer接口的类MyProgrammer,如果它只执行一次这样就显得过于复杂,如果采用匿名内部类就会在很大程度上简化编程,首先介绍一下匿名内部类的基础语法:

new 需要实现的接口() | 父类构造器()
{
    //需要实现的方法或重载父类的方法
}

匿名内部类的语法很简单,必须要实现一个接口或者继承一个类,可以看到使用了new关键词,因此在创建匿名内部类的同时会创建一个该类的实例,并且只能创建一个实例,创建完成后这个匿名内部类就不能再使用,因此,匿名内部类不能是抽象类,由于匿名内部类没有类名所以也不能定义构造函数,但是可以在定义匿名内部类的时候调用父类的有参构造器也可以定义初始化块用于初始化父类的成员变量。下面这个栗子是将上述代码修改为匿名内部类的实现方式:

class MyProgrammer implements Programmer
{
    public void listLanguages() {
        System.out.println("Objective-C Swift Python Go Java");
    }

    public void introduceMyself() {
        System.out.println("My Name is 
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值